package entidad;

import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Usuario implements Serializable {

    private String nombre;
    
    @Id
    private long cedula;
    private String nombredeUsuario;
    private String contraseña;
    
    @OneToOne
    private Permiso permisos;
    
    private String cargo;
    
    public Usuario () {
    }
    
    public Usuario (String nombre, long cedula, String nombredeUsuario,
                    String contrasena, String cargo) {
        this.cedula=cedula;
        this.nombredeUsuario=nombredeUsuario;
        this.nombre=nombre;
        this.contraseña=contrasena;
        this.cargo=cargo;
        this.permisos = new Permiso();
    }
    
    public Usuario (String nombre, long cedula, String nombredeUsuario,
                    String contrasena, String cargo, boolean[] permisos){
        this(nombre,cedula,nombredeUsuario,contrasena,cargo);
        this.permisos = new Permiso(permisos);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public long getCedula() {
        return cedula;
    }

    public void setCedula(long cedula) {
        this.cedula = cedula;
    }

    public String getNombredeUsuario() {
        return nombredeUsuario;
    }

    public void setNombredeUsuario(String nombredeUsuario) {
        this.nombredeUsuario = nombredeUsuario;
    }

    public String getContraseña() {
        return contraseña;
    }

    public void setContraseña(String contrasena) {
        this.contraseña = contrasena;
    }

    public Permiso getPermisos() {
        return permisos;
    }

    public void setPermisos(Permiso permisos) {
        this.permisos = permisos;
    }
    
    public void setPermisos() {
        this.permisos = new Permiso();
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    @Override
    public String toString() {
        return  nombre + " - " + cedula;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Usuario other = (Usuario) obj;
        if (!Objects.equals(this.nombre, other.nombre)) {
            return false;
        }
        if (this.cedula != other.cedula) {
            return false;
        }
        if (!Objects.equals(this.nombredeUsuario, other.nombredeUsuario)) {
            return false;
        }
        return true;
    }
    
}